﻿using System.Collections.Generic;
using FluorineFx;
using Neturion.Dados;
using Neturion.Fachadas;

namespace Neturion.Servicos
{
    [RemotingService]
    public class ServicoContaContabil
    {
        public ContaContabil Inserir(ContaContabil contaContabil, Usuario usuarioPermissao)
        {
            return Fachada.GetInstancia().Inserir(contaContabil, usuarioPermissao);
        }

        public ContaContabil Atualizar(ContaContabil contaContabil, Usuario usuarioPermissao)
        {
            return Fachada.GetInstancia().Atualizar(contaContabil, usuarioPermissao);
        }

        public void Excluir(ContaContabil contaContabil, Usuario usuarioPermissao)
        {
            Fachada.GetInstancia().Excluir(contaContabil, usuarioPermissao);
        }

        public ContaContabil ObterContaContabilPorId(int id, Usuario usuarioPermissao)
        {
            return Fachada.GetInstancia().ObterContaContabilPorId(id, usuarioPermissao);
        }

        public IList<ContaContabil> ObterTodosContaContabils(Usuario usuarioPermissao)
        {
            return Fachada.GetInstancia().ObterTodosContaContabils(usuarioPermissao);
        }

        public IList<ContaContabil> ObterTodosContaContabils(int inicio, int quantidade, int quantidadeMinima, Usuario usuarioPermissao, string codigo, string descricao,
                                        int? intEnumTipoConta, int? intEnumTipoOperacionalidade, TipoContaContabil tipoContaContabil)
        {
            EnumTipoConta? enumTipoConta = null;
            if (intEnumTipoConta != null)
            {
                enumTipoConta = (EnumTipoConta)intEnumTipoConta.Value;
            }

            EnumTipoOperacionalidade? enumTipoOperacionalidade = null;
            if(intEnumTipoOperacionalidade != null)
            {
                enumTipoOperacionalidade = (EnumTipoOperacionalidade) intEnumTipoOperacionalidade.Value;
            }

            return Fachada.GetInstancia().ObterTodosContaContabils(inicio, quantidade, quantidadeMinima, usuarioPermissao, codigo, descricao, enumTipoConta, enumTipoOperacionalidade, tipoContaContabil);
        }

        public ContaContabil ObterContaContabilPorCodigo(string codigo, Usuario usuarioPermissao)
        {
            return Fachada.GetInstancia().ObterContaContabilPorCodigo(codigo, usuarioPermissao);
        }
    }
}